package edu.gdpu.classloader;

import sun.misc.Launcher;

/**
 * @author mazebin
 * @date 2021年 07月08日 16:06:10
 */
public class ClassLoaderTest23 {


    public static void main(String[] args) throws Exception{
        System.out.println(System.getProperty("sun.boot.class.path"));//根加载器路径
        System.out.println(System.getProperty("java.ext.dirs"));//扩展类加载器路径
        System.out.println(System.getProperty("java.class.path"));//应用类加载器路径
        System.out.println(ClassLoader.class.getClassLoader());
        //此处由于系统和扩展类加载器都是Launcher其内部静态类，但又都是非public的，
        // 所以不能直接获取他们的类加载器，方法就是通过获取他们的外部类加载器是谁？从而确当他们的类加载器。
        System.out.println(Launcher.class.getClassLoader());//null
        System.out.println(Launcher.getLauncher());//sun.misc.Launcher@7f31245a
        Class<?> aClass = Class.forName("edu.gdpu.classloader.MySimple");
        System.out.println(aClass.getClassLoader());//sun.misc.Launcher$AppClassLoader@18b4aac2
        System.out.println(ClassLoader.getSystemClassLoader());//sun.misc.Launcher$AppClassLoader@18b4aac2
        System.out.println(ClassLoader.getSystemClassLoader().getParent());//sun.misc.Launcher$ExtClassLoader@18b4aac2
        //下面的系统属性指定系统类加载器，默认是null
        System.out.println(System.getProperty("java.system.class.loader"));
    }
}
